package iterator;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author: Ma JiBin
 * @Email: 1423553596@qq.com
 * @Date: 2018/9/12 10:55
 * @Description: 自定义Map类
 * 通过在List中存放对象数组的方法实现对键值对的存放
 */
public class IMap {
    private List<Object[]> objects = new ArrayList<>();
    private int index = 0;

    /**
     * 添加方法
     *
     * @param key   键
     * @param value 值
     */
    public void put(String key, Object value) {
        Object[] member = {key, value};
        objects.add(member);
    }

    /**
     * 判断是否有下一个对象
     * @return boolean
     */
    public boolean hasNext() {
        if (index < objects.size()) {
            return true;
        }
        return false;
    }

    /**
     * 获取下一个对象
     * @return Object[]
     */
    public Object[] next() {
        return objects.get(index++);
    }

    /**
     * 移除方法
     *
     * @param key 键
     */
    public void remove(String key) {
        for (int i = 0;i < objects.size();i ++) {
            if (objects.get(i)[0].equals(key)) {
                objects.remove(i);
            }
        }
    }

    /**
     * 根据键获取值
     *
     * @param key 键
     * @return value
     */
    public Object get(String key) {
        for (Object[] object : objects) {
            if (object[0].equals(key)) {
                return object[1];
            }
        }
        return null;
    }

    /**
     * 根据Key修改value
     *
     * @param key   键
     * @param value 新值
     */
    public void update(String key, Object value) {
        for (Object[] object : objects) {
            if (object[0].equals(key)) {
                object[1] = value;
            }
        }
    }


}
